package top.timestreet.xmsk.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/**
 * @author TateLiao
 * @data 2019年6月3日
 */
public class ChapterNameUtil {

	/**
	 * 判断标题是否包含'第 *** 章'
	 *
	 * @param chapterName
	 * @return
	 */
	public static Boolean chapterNameIsContriner(String chapterName) {
		return Pattern.matches(".*第.*章.*", chapterName);
	}

	/**
	 * 格式化小说标题
	 * 
	 * @param chapterName
	 *            第一百二十三章
	 * @return 第 123 章
	 */
	public static String chapterNameFormat(String chapterName) {
		String[] split = chapterName.split(" ");
		if (split.length > 1) {
			chapterName =  "第" + chineseNumberInt(chapterSubString(chapterName)) + "章 ";
		}
		for (int i = 1; i < split.length; i++) {
			chapterName += split[i] + " ";
		}
		return chapterName;
	}

	/**
	 * 切割字符串并返回 第**章
	 * 
	 * @param chapterName
	 * @return
	 */
	public static String chapterSubString(String chapterName) {
		return chapterName.substring(chapterName.indexOf("第"), chapterName.indexOf("章"));
	}

	/**
	 * 判断一个字符是否包含中文数字
	 * 
	 * @param content
	 * @return
	 */
	public static boolean hasDigit(String content) {
		List<Character> list = new ArrayList<>();
		list.add('一');
		list.add('二');
		list.add('三');
		list.add('四');
		list.add('五');
		list.add('六');
		list.add('七');
		list.add('八');
		list.add('九');
		list.add('十');
		for (int i = 0; i < content.length(); i++) {
			if (list.contains(content.charAt(i))) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 中文数字字符转阿拉伯数字字符
	 * 
	 * @param chineseNumber
	 * @return
	 */
	public static String chineseNumberInt(String chineseNumber) {
		int result = 0;
		int temp = 1;// 存放一个单位的数字如：十万
		int count = 0;// 判断是否有chArr
		char[] cnArr = new char[] { '一', '二', '三', '四', '五', '六', '七', '八', '九' };
		char[] chArr = new char[] { '十', '百', '千', '万', '亿' };
		for (int i = 0; i < chineseNumber.length(); i++) {
			boolean b = true;// 判断是否是chArr
			char c = chineseNumber.charAt(i);
			for (int j = 0; j < cnArr.length; j++) {// 非单位，即数字
				if (c == cnArr[j]) {
					if (0 != count) {// 添加下一个单位之前，先把上一个单位值添加到结果中
						result += temp;
						temp = 1;
						count = 0;
					}
					// 下标+1，就是对应的值
					temp = j + 1;
					b = false;
					break;
				}
			}
			if (b) {// 单位{'十','百','千','万','亿'}
				for (int j = 0; j < chArr.length; j++) {
					if (c == chArr[j]) {
						switch (j) {
						case 0:
							temp *= 10;
							break;
						case 1:
							temp *= 100;
							break;
						case 2:
							temp *= 1000;
							break;
						case 3:
							temp *= 10000;
							break;
						case 4:
							temp *= 100000000;
							break;
						default:
							break;
						}
						count++;
					}
				}
			}
			if (i == chineseNumber.length() - 1) {// 遍历到最后一个字符
				result += temp;
			}
		}
		return String.valueOf(result);
	}

}
